package by.yativem.commons.utils.matrix;

import java.util.List;

import by.yativem.commons.utils.math.ImmutableSupport;


public interface IMatrix<T extends Object> extends ImmutableSupport< IMatrix<T>>{
	
	void set(int r, int c, T t);

	T get(int r, int c);

	int getRowsCount();

	int getColumnsCount();

	List<T> getRow(int r);

	List<T> getColumn(int column);

	void process(IMatrixHandler<T> handler);
	
	public void processColumn(int column, IMatrixHandler<T> handler);
		

	public void processRow(int row, IMatrixHandler<T> handler);
}